<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::transport::sync_io::Native_socket_stream Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;1.0.2</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport.html">transport</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html">sync_io</a></li><li class="navelem"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::transport::sync_io::Native_socket_stream Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Implements both <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_sender</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_receiver</a> concepts by using a stream-oriented Unix domain socket, allowing high-performance but non-zero-copy transmission of discrete messages, each containing a native handle, a binary blob, or both.  
 <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ipc::transport::sync_io::Native_socket_stream:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream__coll__graph.svg" width="975" height="324"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html">Impl</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal, non-movable pImpl implementation of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">sync_io::Native_socket_stream</a> class.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a24d39cb096987f483f233d9d4ab51ecf"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf">Async_io_obj</a> = <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html">transport::Native_socket_stream</a></td></tr>
<tr class="memdesc:a24d39cb096987f483f233d9d4ab51ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf">More...</a><br /></td></tr>
<tr class="separator:a24d39cb096987f483f233d9d4ab51ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74c58ffad50d8be50a58693626df3610"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a74c58ffad50d8be50a58693626df3610">Sync_io_obj</a> = <a class="el" href="classipc_1_1transport_1_1Null__peer.html">Null_peer</a></td></tr>
<tr class="memdesc:a74c58ffad50d8be50a58693626df3610"><td class="mdescLeft">&#160;</td><td class="mdescRight">You may disregard.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a74c58ffad50d8be50a58693626df3610">More...</a><br /></td></tr>
<tr class="separator:a74c58ffad50d8be50a58693626df3610"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3176682a76814cc3f0fe5b79f7665aec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a3176682a76814cc3f0fe5b79f7665aec">Native_socket_stream</a> ()</td></tr>
<tr class="memdesc:a3176682a76814cc3f0fe5b79f7665aec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default ctor (object is in NULL state).  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a3176682a76814cc3f0fe5b79f7665aec">More...</a><br /></td></tr>
<tr class="separator:a3176682a76814cc3f0fe5b79f7665aec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcfa1e87af688fea34809949ecbcdad0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afcfa1e87af688fea34809949ecbcdad0">Native_socket_stream</a> (flow::log::Logger *logger_ptr, <a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a> nickname_str)</td></tr>
<tr class="memdesc:afcfa1e87af688fea34809949ecbcdad0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a> in NULL (not connected) state.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afcfa1e87af688fea34809949ecbcdad0">More...</a><br /></td></tr>
<tr class="separator:afcfa1e87af688fea34809949ecbcdad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8294867c6153e62ba9e8b683d3d8594"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ae8294867c6153e62ba9e8b683d3d8594">Native_socket_stream</a> (flow::log::Logger *logger_ptr, <a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a> nickname_str, <a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> &amp;&amp;native_peer_socket_moved)</td></tr>
<tr class="memdesc:ae8294867c6153e62ba9e8b683d3d8594"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs the socket-and-meta-blob stream by taking over an already-connected native Unix domain socket handle.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ae8294867c6153e62ba9e8b683d3d8594">More...</a><br /></td></tr>
<tr class="separator:ae8294867c6153e62ba9e8b683d3d8594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11a1c1609f5e2be428fb26af868ca9ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a11a1c1609f5e2be428fb26af868ca9ec">Native_socket_stream</a> (<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:a11a1c1609f5e2be428fb26af868ca9ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move-constructs from <code>src</code>; <code>src</code> becomes as-if default-cted (therefore in NULL state).  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a11a1c1609f5e2be428fb26af868ca9ec">More...</a><br /></td></tr>
<tr class="separator:a11a1c1609f5e2be428fb26af868ca9ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ddf33dea2a6bb2a50c421642bd7fccd"><td class="memItemLeft" align="right" valign="top"><a id="a4ddf33dea2a6bb2a50c421642bd7fccd" name="a4ddf33dea2a6bb2a50c421642bd7fccd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Native_socket_stream</b> (const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;)=delete</td></tr>
<tr class="memdesc:a4ddf33dea2a6bb2a50c421642bd7fccd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy construction is disallowed. <br /></td></tr>
<tr class="separator:a4ddf33dea2a6bb2a50c421642bd7fccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaea5a18b4e62fa7496ada4a2509b3fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#adaea5a18b4e62fa7496ada4a2509b3fe">~Native_socket_stream</a> ()</td></tr>
<tr class="memdesc:adaea5a18b4e62fa7496ada4a2509b3fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> APIs at the same time, per their concept contracts.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#adaea5a18b4e62fa7496ada4a2509b3fe">More...</a><br /></td></tr>
<tr class="separator:adaea5a18b4e62fa7496ada4a2509b3fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a918cc2c153d278b19a81ca2b1e93e6bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a918cc2c153d278b19a81ca2b1e93e6bd">operator=</a> (<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:a918cc2c153d278b19a81ca2b1e93e6bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move-assigns from <code>src</code>; <code>*this</code> acts as if destructed; <code>src</code> becomes as-if default-cted (therefore in NULL state).  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a918cc2c153d278b19a81ca2b1e93e6bd">More...</a><br /></td></tr>
<tr class="separator:a918cc2c153d278b19a81ca2b1e93e6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3379e0892316b1185a85629fb8f5a04e"><td class="memItemLeft" align="right" valign="top"><a id="a3379e0892316b1185a85629fb8f5a04e" name="a3379e0892316b1185a85629fb8f5a04e"></a>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;)=delete</td></tr>
<tr class="memdesc:a3379e0892316b1185a85629fb8f5a04e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment is disallowed. <br /></td></tr>
<tr class="separator:a3379e0892316b1185a85629fb8f5a04e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80cb628f57f12c19f7ce46d0894c773a"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a80cb628f57f12c19f7ce46d0894c773a">nickname</a> () const</td></tr>
<tr class="memdesc:a80cb628f57f12c19f7ce46d0894c773a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns nickname, a brief string suitable for logging.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a80cb628f57f12c19f7ce46d0894c773a">More...</a><br /></td></tr>
<tr class="separator:a80cb628f57f12c19f7ce46d0894c773a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac68d14f4ef33505399df4fd04cd4669"><td class="memItemLeft" align="right" valign="top">flow::log::Logger *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aac68d14f4ef33505399df4fd04cd4669">get_logger</a> () const</td></tr>
<tr class="memdesc:aac68d14f4ef33505399df4fd04cd4669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns logger (possibly null).  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aac68d14f4ef33505399df4fd04cd4669">More...</a><br /></td></tr>
<tr class="separator:aac68d14f4ef33505399df4fd04cd4669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e6e5ccf19782cb698017e9dcf85b34"><td class="memTemplParams" colspan="2">template&lt;typename Create_ev_wait_hndl_func &gt; </td></tr>
<tr class="memitem:af5e6e5ccf19782cb698017e9dcf85b34"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34">replace_event_wait_handles</a> (const Create_ev_wait_hndl_func &amp;create_ev_wait_hndl_func)</td></tr>
<tr class="memdesc:af5e6e5ccf19782cb698017e9dcf85b34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> APIs at the same time, per their concept contracts.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34">More...</a><br /></td></tr>
<tr class="separator:af5e6e5ccf19782cb698017e9dcf85b34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e22d55369f5bd67a4e0d277b73f2823"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e22d55369f5bd67a4e0d277b73f2823">sync_connect</a> (const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;absolute_name, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a2e22d55369f5bd67a4e0d277b73f2823"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e22d55369f5bd67a4e0d277b73f2823">More...</a><br /></td></tr>
<tr class="separator:a2e22d55369f5bd67a4e0d277b73f2823"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a945fb744696feed25067241ce2b6ca4b"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a945fb744696feed25067241ce2b6ca4b">send_meta_blob_max_size</a> () const</td></tr>
<tr class="memdesc:a945fb744696feed25067241ce2b6ca4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a945fb744696feed25067241ce2b6ca4b">More...</a><br /></td></tr>
<tr class="separator:a945fb744696feed25067241ce2b6ca4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabfd97c75d56d3f7a492d95040f4b8ab"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aabfd97c75d56d3f7a492d95040f4b8ab">send_blob_max_size</a> () const</td></tr>
<tr class="memdesc:aabfd97c75d56d3f7a492d95040f4b8ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aabfd97c75d56d3f7a492d95040f4b8ab">More...</a><br /></td></tr>
<tr class="separator:aabfd97c75d56d3f7a492d95040f4b8ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bd0b6a8badd0b770917bb9df9ad6093"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:a2bd0b6a8badd0b770917bb9df9ad6093"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093">start_send_native_handle_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a2bd0b6a8badd0b770917bb9df9ad6093"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093">More...</a><br /></td></tr>
<tr class="separator:a2bd0b6a8badd0b770917bb9df9ad6093"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b1fa31c4d8ac11683472b83efe7956a"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:a2b1fa31c4d8ac11683472b83efe7956a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a">start_send_blob_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a2b1fa31c4d8ac11683472b83efe7956a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a">More...</a><br /></td></tr>
<tr class="separator:a2b1fa31c4d8ac11683472b83efe7956a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9805f7625a1272af64295555f9a1a61b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b">send_native_handle</a> (<a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> hndl_or_null, const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;meta_blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a9805f7625a1272af64295555f9a1a61b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b">More...</a><br /></td></tr>
<tr class="separator:a9805f7625a1272af64295555f9a1a61b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e1474a87ee8f5ec18bf6cc8d6cfe7b2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e1474a87ee8f5ec18bf6cc8d6cfe7b2">send_blob</a> (const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a2e1474a87ee8f5ec18bf6cc8d6cfe7b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e1474a87ee8f5ec18bf6cc8d6cfe7b2">More...</a><br /></td></tr>
<tr class="separator:a2e1474a87ee8f5ec18bf6cc8d6cfe7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb680eb576497ac7e05e8294b49da0eb"><td class="memTemplParams" colspan="2">template&lt;typename Task_err &gt; </td></tr>
<tr class="memitem:afb680eb576497ac7e05e8294b49da0eb"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb">async_end_sending</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:afb680eb576497ac7e05e8294b49da0eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb">More...</a><br /></td></tr>
<tr class="separator:afb680eb576497ac7e05e8294b49da0eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69ed821cc3a41b68dd56880d45033a45"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a69ed821cc3a41b68dd56880d45033a45">end_sending</a> ()</td></tr>
<tr class="memdesc:a69ed821cc3a41b68dd56880d45033a45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a69ed821cc3a41b68dd56880d45033a45">More...</a><br /></td></tr>
<tr class="separator:a69ed821cc3a41b68dd56880d45033a45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaef9afdeb3800df615a01b22070acad8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aaef9afdeb3800df615a01b22070acad8">auto_ping</a> (<a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> period=boost::chrono::seconds(2))</td></tr>
<tr class="memdesc:aaef9afdeb3800df615a01b22070acad8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aaef9afdeb3800df615a01b22070acad8">More...</a><br /></td></tr>
<tr class="separator:aaef9afdeb3800df615a01b22070acad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc5f3cae4c5ff2facb5795c5013374e6"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#acc5f3cae4c5ff2facb5795c5013374e6">receive_meta_blob_max_size</a> () const</td></tr>
<tr class="memdesc:acc5f3cae4c5ff2facb5795c5013374e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#acc5f3cae4c5ff2facb5795c5013374e6">More...</a><br /></td></tr>
<tr class="separator:acc5f3cae4c5ff2facb5795c5013374e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9ca8bbb8148c00f810a516b4fd66608"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aa9ca8bbb8148c00f810a516b4fd66608">receive_blob_max_size</a> () const</td></tr>
<tr class="memdesc:aa9ca8bbb8148c00f810a516b4fd66608"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aa9ca8bbb8148c00f810a516b4fd66608">More...</a><br /></td></tr>
<tr class="separator:aa9ca8bbb8148c00f810a516b4fd66608"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6d65bc2852ad8800cb57a23311fbe7e"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:ac6d65bc2852ad8800cb57a23311fbe7e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e">start_receive_native_handle_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:ac6d65bc2852ad8800cb57a23311fbe7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e">More...</a><br /></td></tr>
<tr class="separator:ac6d65bc2852ad8800cb57a23311fbe7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a931e45a395d0bef15084db3b6b1e9754"><td class="memTemplParams" colspan="2">template&lt;typename Event_wait_func_t &gt; </td></tr>
<tr class="memitem:a931e45a395d0bef15084db3b6b1e9754"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754">start_receive_blob_ops</a> (Event_wait_func_t &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a931e45a395d0bef15084db3b6b1e9754"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754">More...</a><br /></td></tr>
<tr class="separator:a931e45a395d0bef15084db3b6b1e9754"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04effad6ce75fc5c8e6cbee5a26b73e8"><td class="memTemplParams" colspan="2">template&lt;typename Task_err_sz &gt; </td></tr>
<tr class="memitem:a04effad6ce75fc5c8e6cbee5a26b73e8"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8">async_receive_native_handle</a> (<a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> *target_hndl, const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;target_meta_blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, size_t *sync_sz, Task_err_sz &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a04effad6ce75fc5c8e6cbee5a26b73e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8">More...</a><br /></td></tr>
<tr class="separator:a04effad6ce75fc5c8e6cbee5a26b73e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b5fc40ddcdda4b7c78672e9b9dc53c2"><td class="memTemplParams" colspan="2">template&lt;typename Task_err_sz &gt; </td></tr>
<tr class="memitem:a8b5fc40ddcdda4b7c78672e9b9dc53c2"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8b5fc40ddcdda4b7c78672e9b9dc53c2">async_receive_blob</a> (const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;target_blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, size_t *sync_sz, Task_err_sz &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a8b5fc40ddcdda4b7c78672e9b9dc53c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8b5fc40ddcdda4b7c78672e9b9dc53c2">More...</a><br /></td></tr>
<tr class="separator:a8b5fc40ddcdda4b7c78672e9b9dc53c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac645b3e69ee3bfda64c0e9fda62f656a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac645b3e69ee3bfda64c0e9fda62f656a">idle_timer_run</a> (<a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a> timeout=boost::chrono::seconds(5))</td></tr>
<tr class="memdesc:ac645b3e69ee3bfda64c0e9fda62f656a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac645b3e69ee3bfda64c0e9fda62f656a">More...</a><br /></td></tr>
<tr class="separator:ac645b3e69ee3bfda64c0e9fda62f656a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16b605c316922325415d60aeb0af3c40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1util_1_1Process__credentials.html">util::Process_credentials</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a16b605c316922325415d60aeb0af3c40">remote_peer_process_credentials</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0) const</td></tr>
<tr class="memdesc:a16b605c316922325415d60aeb0af3c40"><td class="mdescLeft">&#160;</td><td class="mdescRight">OS-reported process credential (PID, etc.) info about the <em>other</em> connected peer's process, at the time that the OS first established (via local-socket-connect or local-socket-connected-pair-generate call) that opposing peer socket.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a16b605c316922325415d60aeb0af3c40">More...</a><br /></td></tr>
<tr class="separator:a16b605c316922325415d60aeb0af3c40"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a2d6076a9515718eb9f66c88886e482fa"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2d6076a9515718eb9f66c88886e482fa">S_RESOURCE_TYPE_ID</a> = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;lclSock&quot;)</td></tr>
<tr class="memdesc:a2d6076a9515718eb9f66c88886e482fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements concept API.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2d6076a9515718eb9f66c88886e482fa">More...</a><br /></td></tr>
<tr class="separator:a2d6076a9515718eb9f66c88886e482fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab8f0844b61c700b3ab6ab50e3389fff"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aab8f0844b61c700b3ab6ab50e3389fff">S_META_BLOB_UNDERFLOW_ALLOWED</a> = true</td></tr>
<tr class="memdesc:aab8f0844b61c700b3ab6ab50e3389fff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements concept API; namely it is <code>true</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aab8f0844b61c700b3ab6ab50e3389fff">More...</a><br /></td></tr>
<tr class="separator:aab8f0844b61c700b3ab6ab50e3389fff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7034a92ae66759080c035b36ff851e0c"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a7034a92ae66759080c035b36ff851e0c">S_BLOB_UNDERFLOW_ALLOWED</a> = true</td></tr>
<tr class="memdesc:a7034a92ae66759080c035b36ff851e0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements concept API; namely it is <code>true</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a7034a92ae66759080c035b36ff851e0c">More...</a><br /></td></tr>
<tr class="separator:a7034a92ae66759080c035b36ff851e0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2ebc6eabb5f5b4ed5e0264f0fca3db7"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af2ebc6eabb5f5b4ed5e0264f0fca3db7">S_TRANSMIT_NATIVE_HANDLES</a> = true</td></tr>
<tr class="memdesc:af2ebc6eabb5f5b4ed5e0264f0fca3db7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Useful for generic programming: <code>true</code> to indicate a <code>*this</code> has a <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> and an <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8" title="Implements Native_handle_receiver API per contract.">async_receive_native_handle()</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af2ebc6eabb5f5b4ed5e0264f0fca3db7">More...</a><br /></td></tr>
<tr class="separator:af2ebc6eabb5f5b4ed5e0264f0fca3db7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00624e2fc3757012d13e3dc0feb26a21"><td class="memItemLeft" align="right" valign="top">static const size_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a00624e2fc3757012d13e3dc0feb26a21">S_MAX_META_BLOB_LENGTH</a> = Impl::S_MAX_META_BLOB_LENGTH</td></tr>
<tr class="memdesc:a00624e2fc3757012d13e3dc0feb26a21"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum length of a blob that can be sent by this protocol.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a00624e2fc3757012d13e3dc0feb26a21">More...</a><br /></td></tr>
<tr class="separator:a00624e2fc3757012d13e3dc0feb26a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a34a0e0baa9582cfcdef40f590105927c"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">Impl_ptr</a> = std::experimental::propagate_const&lt; boost::movelib::unique_ptr&lt; <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html">Impl</a> &gt; &gt;</td></tr>
<tr class="memdesc:a34a0e0baa9582cfcdef40f590105927c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <code>const</code>-respecting wrapper around <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html" title="Internal, non-movable pImpl implementation of sync_io::Native_socket_stream class.">Native_socket_stream::Impl</a> for the pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">More...</a><br /></td></tr>
<tr class="separator:a34a0e0baa9582cfcdef40f590105927c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a8e3703d5c8bac62f828a372691249c85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">Impl_ptr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8e3703d5c8bac62f828a372691249c85">impl</a> () const</td></tr>
<tr class="memdesc:a8e3703d5c8bac62f828a372691249c85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper that simply returns <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> while guaranteeing that <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> is non-null upon return.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8e3703d5c8bac62f828a372691249c85">More...</a><br /></td></tr>
<tr class="separator:a8e3703d5c8bac62f828a372691249c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7488c933bc6734ff20222aef6f841995"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a7488c933bc6734ff20222aef6f841995">replace_event_wait_handles_fwd</a> (const <a class="el" href="namespaceipc.html#aa455c7f045059736578ca275fc1a851f">Function</a>&lt; <a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a>()&gt; &amp;create_ev_wait_hndl_func)</td></tr>
<tr class="memdesc:a7488c933bc6734ff20222aef6f841995"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34" title="Implements Native_handle_sender and Native_handle_receiver APIs at the same time, per their concept c...">replace_event_wait_handles()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a7488c933bc6734ff20222aef6f841995">More...</a><br /></td></tr>
<tr class="separator:a7488c933bc6734ff20222aef6f841995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4cc1d2afc33e2c713ce585689c8f745"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aa4cc1d2afc33e2c713ce585689c8f745">start_send_native_handle_ops_fwd</a> (<a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:aa4cc1d2afc33e2c713ce585689c8f745"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093" title="Implements Native_handle_sender API per contract.">start_send_native_handle_ops()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aa4cc1d2afc33e2c713ce585689c8f745">More...</a><br /></td></tr>
<tr class="separator:aa4cc1d2afc33e2c713ce585689c8f745"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9689164ddc7cdba699f73c6cdde47d9c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9689164ddc7cdba699f73c6cdde47d9c">start_send_blob_ops_fwd</a> (<a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:a9689164ddc7cdba699f73c6cdde47d9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a" title="Implements Blob_sender API per contract.">start_send_blob_ops()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9689164ddc7cdba699f73c6cdde47d9c">More...</a><br /></td></tr>
<tr class="separator:a9689164ddc7cdba699f73c6cdde47d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a179f900489fd22ba2a04c655eb4cbfd1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a179f900489fd22ba2a04c655eb4cbfd1">async_end_sending_fwd</a> (<a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, flow::async::Task_asio_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a179f900489fd22ba2a04c655eb4cbfd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb" title="Implements Native_handle_sender, Blob_sender API per contract.">async_end_sending()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a179f900489fd22ba2a04c655eb4cbfd1">More...</a><br /></td></tr>
<tr class="separator:a179f900489fd22ba2a04c655eb4cbfd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd887142b1f85fa6c69ee1d409dd2292"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#acd887142b1f85fa6c69ee1d409dd2292">start_receive_native_handle_ops_fwd</a> (<a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:acd887142b1f85fa6c69ee1d409dd2292"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e" title="Implements Native_handle_receiver API per contract.">start_receive_native_handle_ops()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#acd887142b1f85fa6c69ee1d409dd2292">More...</a><br /></td></tr>
<tr class="separator:acd887142b1f85fa6c69ee1d409dd2292"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae980fbf72c11b6511cd3bec06ffef93b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ae980fbf72c11b6511cd3bec06ffef93b">start_receive_blob_ops_fwd</a> (<a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;ev_wait_func)</td></tr>
<tr class="memdesc:ae980fbf72c11b6511cd3bec06ffef93b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754" title="Implements Blob_receiver API per contract.">start_receive_blob_ops()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ae980fbf72c11b6511cd3bec06ffef93b">More...</a><br /></td></tr>
<tr class="separator:ae980fbf72c11b6511cd3bec06ffef93b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe442ee09c5605638a65be862ee6c946"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#abe442ee09c5605638a65be862ee6c946">async_receive_native_handle_fwd</a> (<a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> *target_hndl, const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;target_meta_blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, size_t *sync_sz, flow::async::Task_asio_err_sz &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:abe442ee09c5605638a65be862ee6c946"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8" title="Implements Native_handle_receiver API per contract.">async_receive_native_handle()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#abe442ee09c5605638a65be862ee6c946">More...</a><br /></td></tr>
<tr class="separator:abe442ee09c5605638a65be862ee6c946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a883bc5bd0fe18aec79d4dead5d8737fa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a883bc5bd0fe18aec79d4dead5d8737fa">async_receive_blob_fwd</a> (const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;target_blob, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *sync_err_code, size_t *sync_sz, flow::async::Task_asio_err_sz &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a883bc5bd0fe18aec79d4dead5d8737fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8b5fc40ddcdda4b7c78672e9b9dc53c2" title="Implements Blob_receiver API per contract.">async_receive_blob()</a> as required by pImpl idiom.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a883bc5bd0fe18aec79d4dead5d8737fa">More...</a><br /></td></tr>
<tr class="separator:a883bc5bd0fe18aec79d4dead5d8737fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a9db322dea8a43f4ceb04a2085d63afb0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">Impl_ptr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0">m_impl</a></td></tr>
<tr class="memdesc:a9db322dea8a43f4ceb04a2085d63afb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The true implementation of this class.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0">More...</a><br /></td></tr>
<tr class="separator:a9db322dea8a43f4ceb04a2085d63afb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6108711cc8b33c3b7ef0491ba78e2f6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;val)</td></tr>
<tr class="memdesc:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Friend of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6108711cc8b33c3b7ef0491ba78e2f6">More...</a><br /></td></tr>
<tr class="separator:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a4f41f5d5b5d71a6092f3ade3252cc"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a78a4f41f5d5b5d71a6092f3ade3252cc">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html">Impl</a> &amp;val)</td></tr>
<tr class="memdesc:a78a4f41f5d5b5d71a6092f3ade3252cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Friend of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a78a4f41f5d5b5d71a6092f3ade3252cc">More...</a><br /></td></tr>
<tr class="separator:a78a4f41f5d5b5d71a6092f3ade3252cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6108711cc8b33c3b7ef0491ba78e2f6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;val)</td></tr>
<tr class="memdesc:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6108711cc8b33c3b7ef0491ba78e2f6">More...</a><br /></td></tr>
<tr class="separator:ac6108711cc8b33c3b7ef0491ba78e2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Implements both <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_sender</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_receiver</a> concepts by using a stream-oriented Unix domain socket, allowing high-performance but non-zero-copy transmission of discrete messages, each containing a native handle, a binary blob, or both. </p>
<p >This is the <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-pattern counterpart to <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> &ndash; and in fact the latter use an instance of the present class as its core.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> and <a class="el" href="namespaceipc_1_1util_1_1sync__io.html" title="Contains common code, as well as important explanatory documentation in the following text,...">util::sync_io</a> doc headers. The latter describes the general pattern which we implement here; it also contrasts it with the async-I/O pattern, which the former implements. In general we recommend you use a <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> rather than a <code>*this</code> &ndash; but you may have particular needs (summarized in <a class="el" href="namespaceipc_1_1util_1_1sync__io.html" title="Contains common code, as well as important explanatory documentation in the following text,...">util::sync_io</a> doc header) that would make you decide otherwise.</dd></dl>
<h3>Quick note on naming</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<h3><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">sync_io::Blob_sender</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">sync_io::Blob_receiver</a> concept compatibility</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply analogously.</p>
<h3>Informal comparison to other core transport mechanisms</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<h3>Cleanup</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<h3>How to use</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply. The differences (some of which are quite important) are as follows.</p>
<p >As described by the concepts being implemented &ndash; one must use <code>start_send_*_ops()</code> before the send API (<code>send_*()</code>, <code>*end_sending()</code>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aaef9afdeb3800df615a01b22070acad8" title="Implements Native_handle_sender, Blob_sender API per contract.">auto_ping()</a>) and/or <code>start_receive_*_ops()</code> before the receive API (<code>async_receive_*()</code>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac645b3e69ee3bfda64c0e9fda62f656a" title="Implements Native_handle_receiver, Blob_receiver API per contract.">idle_timer_run()</a>).</p>
<p >Before <code>start_*_ops()</code>, it may be required to call <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34" title="Implements Native_handle_sender and Native_handle_receiver APIs at the same time, per their concept c...">replace_event_wait_handles()</a> (depending on your use case).</p>
<p >Regarding ctors: Naturally the <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code>-core-adopting ctor does not exist here, as we <em>are</em> a <code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> core. (Or I suppose it's just the move ctor.)</p>
<h2>Thread safety </h2>
<p >Boring stuff out of the way first: It is safe to concurrently act on 2 separate objects of this type. <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a80cb628f57f12c19f7ce46d0894c773a" title="Returns nickname, a brief string suitable for logging.">nickname()</a> and <code>ostream&lt;&lt;</code> are always safe to call, and they always yield the same value (modulo across move-assignment).</p>
<p >Now as to invoking operation X concurrently with operation Y on the same <code>*this</code>, where at least X is non-<code>const</code>:</p>
<p >Firstly let us define operation: Unlike with most APIs in the library, operations don't merely comprise methods (or related free functions). Rather, in addition, invoking <a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24" title="In sync_io pattern, concrete type storing user-supplied function invoked by pattern-implementing ipc:...">util::sync_io::Event_wait_func</a> <code>(*on_active_ev_func)()</code> &ndash; to inform <code>*this</code> of an active event due to an earlier async-wait requested by <code>*this</code> &ndash; is formally an operation on <code>*this</code>. It can be thought of as a member of its (non-<code>const</code>) API. For the below discussion we shall pretend these methods actually exist, to simplify discussion of these operations:</p><ul>
<li><code>send_on_active_ev()</code> (<code>on_active_ev_func</code> originating from <code>start_send_*_ops()</code>).<ul>
<li>Recall this may synchronously trigger <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb" title="Implements Native_handle_sender, Blob_sender API per contract.">async_end_sending()</a>-passed completion handler.</li>
</ul>
</li>
<li><code>receive_on_active_ev()</code> (<code>on_active_ev_func</code> originating from <code>start_receive_*_ops()</code>).<ul>
<li>Recall this may synchronously trigger <code>async_receive_*()</code>-passed completion handler.</li>
</ul>
</li>
</ul>
<p >Objects of most types simply declare it to be unsafe to invoke (on one <code>*this</code>) non-<code>const</code> operation X concurrently with operation Y (whether X or Y are the same op or differ). <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a></code>, however, works as follows: By <em>default</em> that is indeed the rule... with the exception of the following specific exceptions, wherein it <em>is</em> <b>intentionally</b> safe.</p>
<h3>In PEER state</h3>
<p >Firstly, let's assume <code>*this</code> is in PEER state, which is achieved either by using the PEER-state ctor form (where a pre-connected <code>Native_handle</code> is subsumed), or else by successfully completing <code>*_connect()</code>. Cool? Cool. We are in PEER state. Then:</p>
<p >Boring ones first: <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e22d55369f5bd67a4e0d277b73f2823" title="Identical to Async_io_obj counterpart.">sync_connect()</a> simply returns <code>false</code> and is always safe to call (it is meant for NULL state). <code>*_max_size()</code> always return the same respective constant values and are always safe to call.</p>
<p >Much more significantly, we now list two specific categories of operations:</p><ul>
<li>Send-ops:<ul>
<li><code>send_*()</code>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a69ed821cc3a41b68dd56880d45033a45" title="Implements Native_handle_sender, Blob_sender API per contract.">end_sending()</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb" title="Implements Native_handle_sender, Blob_sender API per contract.">async_end_sending()</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#aaef9afdeb3800df615a01b22070acad8" title="Implements Native_handle_sender, Blob_sender API per contract.">auto_ping()</a>; and <code>send_on_active_ev()</code> (reminder: not a real method but a real op/see definition above).</li>
</ul>
</li>
<li>Receive-ops:<ul>
<li><code>async_receive_*()</code>, <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac645b3e69ee3bfda64c0e9fda62f656a" title="Implements Native_handle_receiver, Blob_receiver API per contract.">idle_timer_run()</a></code>; and <code>receive_on_active_ev()</code> (reminder: not a real method but a real op/see definition above).</li>
</ul>
</li>
</ul>
<p >Now then: It is safe to invoke (even on the same <code>*this</code>) any 1 operation from the "send-ops" list concurrently with any 1 operation from the "receive-ops" list.</p>
<p >Formally that's simply the case.</p>
<p >Informally: it may be highly significant to performance of the user code that this is the case. It means that the two mutually-opposing pipes can operate concurrently, despite the fact they're operating on the same socket. E.g., an upload and download being highly active simultaneously will proceed in parallel on separate processor cores if possible. If your event loop is single-threaded in any case, then this does not matter; but if 2+ threads are involved, then it may well matter quite a bit. (For example: non-<code><a class="el" href="namespaceipc_1_1transport_1_1sync__io.html" title="sync_io-pattern counterparts to async-I/O-pattern object types in parent namespace ipc::transport.">sync_io</a></code> <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> is internally built on a <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">sync_io::Native_socket_stream</a>. It starts a thread (internally dubbed thread W) in which to perform significant incoming-direction work, while most &ndash; but not all &ndash; outgoing-direction work is done synchronously from its user's calling thread (dubbed thread U). Therefore it can keep 2 separate mutexes (one for each direction) and lock only 1 when doing in-work (in either thread U/W); and lock the other when doing out-work, in either thread U/W. So if a send can complete synchronously in thread U, while a receive does stuff in the background in thread W, the two may execute concurrently as opposed to serially. Running concurrently would decrease latency latency in sending and/or receipt.)</p>
<h3>In NULL state</h3>
<p >Nothing interesting here.</p>
<h3>Implementation design/rationale</h3>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply: the pImpl stuff; and the fact that:</p>
<p >The rest of the implementation is inside <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html" title="Internal, non-movable pImpl implementation of sync_io::Native_socket_stream class.">sync_io::Native_socket_stream::Impl</a> and is discussed in that class's doc header.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html" title="Internal, non-movable pImpl implementation of sync_io::Native_socket_stream class.">sync_io::Native_socket_stream::Impl</a> doc header.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_sender</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">sync_io::Native_handle_receiver</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">sync_io::Blob_sender</a>: alternatively implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">sync_io::Blob_receiver</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00150">150</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a24d39cb096987f483f233d9d4ab51ecf" name="a24d39cb096987f483f233d9d4ab51ecf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24d39cb096987f483f233d9d4ab51ecf">&#9670;&nbsp;</a></span>Async_io_obj</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf">ipc::transport::sync_io::Native_socket_stream::Async_io_obj</a> =  <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html">transport::Native_socket_stream</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Useful for generic programming, the async-I/O-pattern counterpart to <code>*this</code> type. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00156">156</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<a id="a34a0e0baa9582cfcdef40f590105927c" name="a34a0e0baa9582cfcdef40f590105927c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34a0e0baa9582cfcdef40f590105927c">&#9670;&nbsp;</a></span>Impl_ptr</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">ipc::transport::sync_io::Native_socket_stream::Impl_ptr</a> =  std::experimental::propagate_const&lt;boost::movelib::unique_ptr&lt;<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html">Impl</a>&gt; &gt;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for <code>const</code>-respecting wrapper around <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html" title="Internal, non-movable pImpl implementation of sync_io::Native_socket_stream class.">Native_socket_stream::Impl</a> for the pImpl idiom. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00613">613</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<a id="a74c58ffad50d8be50a58693626df3610" name="a74c58ffad50d8be50a58693626df3610"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74c58ffad50d8be50a58693626df3610">&#9670;&nbsp;</a></span>Sync_io_obj</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a74c58ffad50d8be50a58693626df3610">ipc::transport::sync_io::Native_socket_stream::Sync_io_obj</a> =  <a class="el" href="classipc_1_1transport_1_1Null__peer.html">Null_peer</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>You may disregard. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00158">158</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3176682a76814cc3f0fe5b79f7665aec" name="a3176682a76814cc3f0fe5b79f7665aec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3176682a76814cc3f0fe5b79f7665aec">&#9670;&nbsp;</a></span>Native_socket_stream() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream::Native_socket_stream </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Default ctor (object is in NULL state). </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a935bfba8ac18f395eb920224395cbc8f" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Native_handle_sender::Native_handle_sender()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a4d1ef7666fc35e98ced97abdc131a345" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Native_handle_receiver::Native_handle_receiver()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#ab096af43b37c0fc0169762f59e1a74dd" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Blob_sender::Blob_sender()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#a73f2f615f48566e32f7a974e9448f4fc" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Blob_receiver::Blob_receiver()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00055">55</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

</div>
</div>
<a id="afcfa1e87af688fea34809949ecbcdad0" name="afcfa1e87af688fea34809949ecbcdad0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcfa1e87af688fea34809949ecbcdad0">&#9670;&nbsp;</a></span>Native_socket_stream() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream::Native_socket_stream </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a>&#160;</td>
          <td class="paramname"><em>nickname_str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a> in NULL (not connected) state. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">nickname_str</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00063">63</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

</div>
</div>
<a id="ae8294867c6153e62ba9e8b683d3d8594" name="ae8294867c6153e62ba9e8b683d3d8594"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8294867c6153e62ba9e8b683d3d8594">&#9670;&nbsp;</a></span>Native_socket_stream() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream::Native_socket_stream </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ae6ac47812a90d1287c61e0b7de7bc4f5">util::String_view</a>&#160;</td>
          <td class="paramname"><em>nickname_str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>native_peer_socket_moved</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructs the socket-and-meta-blob stream by taking over an already-connected native Unix domain socket handle. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">native_peer_socket_moved</td><td>See above. </td></tr>
    <tr><td class="paramname">nickname_str</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00069">69</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

</div>
</div>
<a id="a11a1c1609f5e2be428fb26af868ca9ec" name="a11a1c1609f5e2be428fb26af868ca9ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11a1c1609f5e2be428fb26af868ca9ec">&#9670;&nbsp;</a></span>Native_socket_stream() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream::Native_socket_stream </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move-constructs from <code>src</code>; <code>src</code> becomes as-if default-cted (therefore in NULL state). </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>See above.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a935bfba8ac18f395eb920224395cbc8f" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Native_handle_sender::Native_handle_sender()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a4d1ef7666fc35e98ced97abdc131a345" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Native_handle_receiver::Native_handle_receiver()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#ab096af43b37c0fc0169762f59e1a74dd" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Blob_sender::Blob_sender()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#a73f2f615f48566e32f7a974e9448f4fc" title="Default ctor: Creates a peer object in NULL (neither connected nor connecting) state.">Blob_receiver::Blob_receiver()</a>: implemented concept. </dd></dl>

</div>
</div>
<a id="adaea5a18b4e62fa7496ada4a2509b3fe" name="adaea5a18b4e62fa7496ada4a2509b3fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adaea5a18b4e62fa7496ada4a2509b3fe">&#9670;&nbsp;</a></span>~Native_socket_stream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::transport::sync_io::Native_socket_stream::~Native_socket_stream </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> APIs at the same time, per their concept contracts. </p>
<p >(Also implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> APIs; they are identical.)</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a59dff09b6ab224e32a096c97b629d059" title="Destroys this peer endpoint which will end the conceptual outgoing-direction pipe (in PEER state,...">Native_handle_sender::~Native_handle_sender()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a9b464ca1d564e19340221e9958a5aa45" title="Destroys this peer endpoint which will end the conceptual outgoing-direction pipe (in PEER state,...">Native_handle_receiver::~Native_handle_receiver()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#a5b6fd92f1c435e13dcf6df40c76b3ce2" title="Destroys this peer endpoint which will end the conceptual outgoing-direction pipe (in PEER state,...">Blob_sender::~Blob_sender()</a>: alternatively implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#a53d0a7f08ce20ea8515b57d78c598858" title="Destroys this peer endpoint which will end the conceptual outgoing-direction pipe (in PEER state,...">Blob_receiver::~Blob_receiver()</a>: alternatively implemented concept. </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="afb680eb576497ac7e05e8294b49da0eb" name="afb680eb576497ac7e05e8294b49da0eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb680eb576497ac7e05e8294b49da0eb">&#9670;&nbsp;</a></span>async_end_sending()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Task_err &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_end_sending </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<p ><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated and passed to <code>on_done_func()</code> or emitted synchronously: See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart doc header.</p>
<p >Reminder: In rare circumstances, an error emitted there may represent something detected during handling of a preceding <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> or <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e1474a87ee8f5ec18bf6cc8d6cfe7b2" title="Implements Blob_sender API per contract.">send_blob()</a> call but after it returned.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. Reminder: If and only if it returns <code>false</code>, we're in NULL state, or <code>*end_sending()</code> has already been called; and <code>on_done_func()</code> will never be called, nor will an error be emitted.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a9b99e18949cf819bfae4e08e44744fc6" title="Equivalent to send_native_handle() but sends a graceful-close message instead of the usual payload; t...">Native_handle_sender::async_end_sending()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#a923cff103f564573c90999e545e1f644" title="Equivalent to send_blob() but sends a graceful-close message instead of the usual payload.">Blob_sender::async_end_sending()</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00795">795</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00178">async_end_sending_fwd()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_afb680eb576497ac7e05e8294b49da0eb_cgraph.svg" width="630" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a179f900489fd22ba2a04c655eb4cbfd1" name="a179f900489fd22ba2a04c655eb4cbfd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a179f900489fd22ba2a04c655eb4cbfd1">&#9670;&nbsp;</a></span>async_end_sending_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_end_sending_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">flow::async::Task_asio_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#afb680eb576497ac7e05e8294b49da0eb" title="Implements Native_handle_sender, Blob_sender API per contract.">async_end_sending()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00178">178</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00795">async_end_sending()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a179f900489fd22ba2a04c655eb4cbfd1_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a179f900489fd22ba2a04c655eb4cbfd1_icgraph.svg" width="387" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a8b5fc40ddcdda4b7c78672e9b9dc53c2" name="a8b5fc40ddcdda4b7c78672e9b9dc53c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b5fc40ddcdda4b7c78672e9b9dc53c2">&#9670;&nbsp;</a></span>async_receive_blob()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Task_err_sz &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_receive_blob </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;&#160;</td>
          <td class="paramname"><em>target_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>sync_sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err_sz &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<p ><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated and passed to <code>on_done_func()</code> or emitted synchronously: See <code><a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html#ac5572c8165e25f106f18d327c07d1c3f" title="Implements Blob_receiver API per contract.">Async_io_obj::async_receive_blob()</a></code> doc header (but not <code>S_OBJECT_SHUTDOWN_ABORTED_COMPLETION_HANDLER</code>).</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err_sz</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_blob</td><td>See above. </td></tr>
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">sync_sz</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#af05f5ec0a8fd01b2056c09613a4dfc1e" title="In PEER state: Possibly-asynchronously awaits one discrete message – as sent by the opposing peer – a...">Blob_receiver::async_receive_blob()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00835">835</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00202">async_receive_blob_fwd()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a8b5fc40ddcdda4b7c78672e9b9dc53c2_cgraph.svg" width="630" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a883bc5bd0fe18aec79d4dead5d8737fa" name="a883bc5bd0fe18aec79d4dead5d8737fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a883bc5bd0fe18aec79d4dead5d8737fa">&#9670;&nbsp;</a></span>async_receive_blob_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_receive_blob_fwd </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;&#160;</td>
          <td class="paramname"><em>target_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>sync_sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">flow::async::Task_asio_err_sz &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8b5fc40ddcdda4b7c78672e9b9dc53c2" title="Implements Blob_receiver API per contract.">async_receive_blob()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_blob</td><td>See above. </td></tr>
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">sync_sz</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00202">202</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00835">async_receive_blob()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a883bc5bd0fe18aec79d4dead5d8737fa_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a883bc5bd0fe18aec79d4dead5d8737fa_icgraph.svg" width="387" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a04effad6ce75fc5c8e6cbee5a26b73e8" name="a04effad6ce75fc5c8e6cbee5a26b73e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04effad6ce75fc5c8e6cbee5a26b73e8">&#9670;&nbsp;</a></span>async_receive_native_handle()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Task_err_sz &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_receive_native_handle </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> *&#160;</td>
          <td class="paramname"><em>target_hndl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;&#160;</td>
          <td class="paramname"><em>target_meta_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>sync_sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err_sz &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<p ><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated and passed to <code>on_done_func()</code> or emitted synchronously: See <code><a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html#a266b52821557f2a4fa8f81058290dee2" title="Implements Native_handle_receiver API per contract.">Async_io_obj::async_receive_native_handle()</a></code> doc header (but not <code>S_OBJECT_SHUTDOWN_ABORTED_COMPLETION_HANDLER</code>).</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err_sz</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_hndl</td><td>See above. </td></tr>
    <tr><td class="paramname">target_meta_blob</td><td>See above. </td></tr>
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">sync_sz</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a6350bfb7f929a5b60fa4af1b6f7166cf" title="In PEER state: Possibly-asynchronously awaits one discrete message – as sent by the opposing peer via...">Native_handle_receiver::async_receive_native_handle()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00823">823</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00193">async_receive_native_handle_fwd()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a04effad6ce75fc5c8e6cbee5a26b73e8_cgraph.svg" width="706" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="abe442ee09c5605638a65be862ee6c946" name="abe442ee09c5605638a65be862ee6c946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe442ee09c5605638a65be862ee6c946">&#9670;&nbsp;</a></span>async_receive_native_handle_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::async_receive_native_handle_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a> *&#160;</td>
          <td class="paramname"><em>target_hndl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#a6cb62ae434900f3a8915b33ec5d61a96">util::Blob_mutable</a> &amp;&#160;</td>
          <td class="paramname"><em>target_meta_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>sync_err_code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>sync_sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">flow::async::Task_asio_err_sz &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8" title="Implements Native_handle_receiver API per contract.">async_receive_native_handle()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_hndl</td><td>See above. </td></tr>
    <tr><td class="paramname">target_meta_blob</td><td>See above. </td></tr>
    <tr><td class="paramname">sync_err_code</td><td>See above. Do realize <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297aa667487757f9d6300f6888bac40bcc24" title="A sync_io operation could not immediately complete; it will complete contingent on active async-wait ...">error::Code::S_SYNC_IO_WOULD_BLOCK</a> <em>is</em> still an error, so if this pointer is null, then would-block <em>will</em> make this throw. </td></tr>
    <tr><td class="paramname">sync_sz</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00193">193</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00823">async_receive_native_handle()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_abe442ee09c5605638a65be862ee6c946_cgraph.svg" width="468" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_abe442ee09c5605638a65be862ee6c946_icgraph.svg" width="463" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aaef9afdeb3800df615a01b22070acad8" name="aaef9afdeb3800df615a01b22070acad8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaef9afdeb3800df615a01b22070acad8">&#9670;&nbsp;</a></span>auto_ping()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::auto_ping </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>period</em> = <code>boost::chrono::seconds(2)</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">period</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a5b90444b333091c3e44d01b8cb07a499" title="In PEER state: Irreversibly enables periodic auto-pinging of opposing receiver with low-level message...">Native_handle_sender::auto_ping()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#ab66231120f7e774e9d8dadd6b1d9b2ea" title="In PEER state: Irreversibly enables periodic auto-pinging of opposing receiver with low-level message...">Blob_sender::auto_ping()</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00128">128</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aaef9afdeb3800df615a01b22070acad8_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a69ed821cc3a41b68dd56880d45033a45" name="a69ed821cc3a41b68dd56880d45033a45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69ed821cc3a41b68dd56880d45033a45">&#9670;&nbsp;</a></span>end_sending()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::end_sending </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a8c60142c23bf70bc3722d557ad309d58" title="Equivalent to async_end_sending(&amp;E, F) wherein F() does nothing, and E is some Error_code &quot;sink&quot; igno...">Native_handle_sender::end_sending()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#a4fd1a24f1221886230ffc18313eaedce" title="Equivalent to async_end_sending(F) wherein F() does nothing.">Blob_sender::end_sending()</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00123">123</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a69ed821cc3a41b68dd56880d45033a45_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aac68d14f4ef33505399df4fd04cd4669" name="aac68d14f4ef33505399df4fd04cd4669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac68d14f4ef33505399df4fd04cd4669">&#9670;&nbsp;</a></span>get_logger()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">flow::log::Logger * ipc::transport::sync_io::Native_socket_stream::get_logger </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns logger (possibly null). </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00148">148</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2detail_2native__socket__stream__impl_8cpp_source.html#l00281">ipc::transport::sync_io::Native_socket_stream::Impl::async_connect()</a>, <a class="el" href="sync__io_2detail_2native__socket__stream__impl_8cpp_source.html#l00069">ipc::transport::sync_io::Native_socket_stream::Impl::Impl()</a>, <a class="el" href="native__socket__stream__impl__rcv_8cpp_source.html#l00683">ipc::transport::sync_io::Native_socket_stream::Impl::rcv_nb_read_low_lvl_payload()</a>, <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l00740">ipc::transport::sync_io::Native_socket_stream::Impl::snd_nb_write_low_lvl_payload()</a>, and <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l00606">ipc::transport::sync_io::Native_socket_stream::Impl::snd_sync_write_or_q_payload()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aac68d14f4ef33505399df4fd04cd4669_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aac68d14f4ef33505399df4fd04cd4669_icgraph.svg" width="599" height="384"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ac645b3e69ee3bfda64c0e9fda62f656a" name="ac645b3e69ee3bfda64c0e9fda62f656a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac645b3e69ee3bfda64c0e9fda62f656a">&#9670;&nbsp;</a></span>idle_timer_run()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::idle_timer_run </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util.html#ac66141280c3b7295a86b65209f31cc58">util::Fine_duration</a>&#160;</td>
          <td class="paramname"><em>timeout</em> = <code>boost::chrono::seconds(5)</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a>, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">timeout</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#a6888f84e88c00d28daa579a9b47a2d77" title="In PEER state: Irreversibly enables a conceptual idle timer whose potential side effect is,...">Blob_receiver::idle_timer_run()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a57ec0f2a9c1b8bfbaaf88975433a1354" title="In PEER state: Irreversibly enables a conceptual idle timer whose potential side effect is,...">Native_handle_receiver::idle_timer_run()</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00143">143</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_ac645b3e69ee3bfda64c0e9fda62f656a_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a8e3703d5c8bac62f828a372691249c85" name="a8e3703d5c8bac62f828a372691249c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e3703d5c8bac62f828a372691249c85">&#9670;&nbsp;</a></span>impl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">Native_socket_stream::Impl_ptr</a> &amp; ipc::transport::sync_io::Native_socket_stream::impl </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Helper that simply returns <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> while guaranteeing that <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> is non-null upon return. </p>
<p >All forwarding-to-<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> methods (including <code>const</code> ones) shall access <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a> through this <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8e3703d5c8bac62f828a372691249c85" title="Helper that simply returns m_impl while guaranteeing that m_impl is non-null upon return.">impl()</a> method only.</p>
<h3>Design/rationale</h3>
<p >Notes from <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>Reference to <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9db322dea8a43f4ceb04a2085d63afb0" title="The true implementation of this class.">m_impl</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">41</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00763">m_impl</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00178">async_end_sending_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00202">async_receive_blob_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00193">async_receive_native_handle_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00128">auto_ping()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00123">end_sending()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00148">get_logger()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00143">idle_timer_run()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00078">nickname()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00138">receive_blob_max_size()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00133">receive_meta_blob_max_size()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00097">remote_peer_process_credentials()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00163">replace_event_wait_handles_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00118">send_blob()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00107">send_blob_max_size()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00102">send_meta_blob_max_size()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00112">send_native_handle()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00188">start_receive_blob_ops_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00183">start_receive_native_handle_ops_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00173">start_send_blob_ops_fwd()</a>, <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00168">start_send_native_handle_ops_fwd()</a>, and <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00083">sync_connect()</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a8e3703d5c8bac62f828a372691249c85_icgraph.svg" width="956" height="1526"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a80cb628f57f12c19f7ce46d0894c773a" name="a80cb628f57f12c19f7ce46d0894c773a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80cb628f57f12c19f7ce46d0894c773a">&#9670;&nbsp;</a></span>nickname()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string &amp; ipc::transport::sync_io::Native_socket_stream::nickname </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns nickname, a brief string suitable for logging. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00078">78</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a80cb628f57f12c19f7ce46d0894c773a_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a918cc2c153d278b19a81ca2b1e93e6bd" name="a918cc2c153d278b19a81ca2b1e93e6bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a918cc2c153d278b19a81ca2b1e93e6bd">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp; ipc::transport::sync_io::Native_socket_stream::operator= </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Move-assigns from <code>src</code>; <code>*this</code> acts as if destructed; <code>src</code> becomes as-if default-cted (therefore in NULL state). </p>
<p >No-op if <code>&amp;src == this</code>.</p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>*this</code>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> move assignment: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> move assignment: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> move assignment: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> move assignment: implemented concept. </dd></dl>

</div>
</div>
<a id="aa9ca8bbb8148c00f810a516b4fd66608" name="aa9ca8bbb8148c00f810a516b4fd66608"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9ca8bbb8148c00f810a516b4fd66608">&#9670;&nbsp;</a></span>receive_blob_max_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::sync_io::Native_socket_stream::receive_blob_max_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Blob__receiver.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order receivin...">transport::Blob_receiver</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#aa8c46b25839f7660a1c867a25aa3680c" title="All notes from sync_io::Native_handle_receiver::receive_meta_blob_max_size() apply.">Blob_receiver::receive_blob_max_size()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00138">138</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aa9ca8bbb8148c00f810a516b4fd66608_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="acc5f3cae4c5ff2facb5795c5013374e6" name="acc5f3cae4c5ff2facb5795c5013374e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc5f3cae4c5ff2facb5795c5013374e6">&#9670;&nbsp;</a></span>receive_meta_blob_max_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::sync_io::Native_socket_stream::receive_meta_blob_max_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order receivin...">transport::Native_handle_receiver</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a46194b54e9465a5a41d7fedf9d4982ae" title="Mirrors sync_io::Native_handle_sender::send_meta_blob_max_size().">Native_handle_receiver::receive_meta_blob_max_size()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00133">133</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__rcv_8cpp_source.html#l00802">ipc::transport::sync_io::Native_socket_stream::Impl::receive_blob_max_size()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_acc5f3cae4c5ff2facb5795c5013374e6_cgraph.svg" width="440" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_acc5f3cae4c5ff2facb5795c5013374e6_icgraph.svg" width="431" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a16b605c316922325415d60aeb0af3c40" name="a16b605c316922325415d60aeb0af3c40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16b605c316922325415d60aeb0af3c40">&#9670;&nbsp;</a></span>remote_peer_process_credentials()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1util_1_1Process__credentials.html">util::Process_credentials</a> ipc::transport::sync_io::Native_socket_stream::remote_peer_process_credentials </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>OS-reported process credential (PID, etc.) info about the <em>other</em> connected peer's process, at the time that the OS first established (via local-socket-connect or local-socket-connected-pair-generate call) that opposing peer socket. </p>
<p >The value returned, assuming a non-error-emitting execution, shall always be the same for a given <code>*this</code>.</p>
<p >Informally: To avoid (though, formally, not guarantee) <a class="el" href="namespaceipc_1_1transport_1_1error.html#adfef15ef4e76cc55d652fbd9c2797297acb14cace6f75d915cd800113c37721e7" title="Unable to access low-level details: an earlier-reported system error had hosed the underlying transpo...">error::Code::S_LOW_LVL_TRANSPORT_HOSED</a>, it is best to call this immediately upon entry of <code>*this</code> to PEER state and/or before invoking any other APIs.</p>
<p >If invoked outside of PEER state returns <code>Process_credentials()</code> immediately and otherwise does nothing.</p>
<dl class="section return"><dt>Returns</dt><dd>See above; or <code>Peer_credentials()</code> if invoked outside of PEER state or in case of error. The 2 eventualities can be distinguished by checking <code>*err_code</code> truthiness. Better yet only call <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a16b605c316922325415d60aeb0af3c40" title="OS-reported process credential (PID, etc.) info about the other connected peer&#39;s process,...">remote_peer_process_credentials()</a> in PEER state, as it is otherwise conceptually meaningless.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">err_code</td><td>See <code>flow::Error_code</code> docs for error reporting semantics. <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated: See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart doc header. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00097">97</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a16b605c316922325415d60aeb0af3c40_cgraph.svg" width="467" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="af5e6e5ccf19782cb698017e9dcf85b34" name="af5e6e5ccf19782cb698017e9dcf85b34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5e6e5ccf19782cb698017e9dcf85b34">&#9670;&nbsp;</a></span>replace_event_wait_handles()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Create_ev_wait_hndl_func &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::replace_event_wait_handles </td>
          <td>(</td>
          <td class="paramtype">const Create_ev_wait_hndl_func &amp;&#160;</td>
          <td class="paramname"><em>create_ev_wait_hndl_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> APIs at the same time, per their concept contracts. </p>
<p >(Also implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> <em>and</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> APIs; they are identical.)</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">create_ev_wait_hndl_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#abe6227dfa077571d6eed2707532e4360" title="To be (optionally) invoked before any start_*_ops(), supplies a factory for the util::sync_io::Asio_w...">Native_handle_sender::replace_event_wait_handles()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#a6b26e7ee8f63e8e80b9cc7010bf208d6" title="Coincides with sync_io::Native_handle_sender concept counterpart.">Native_handle_receiver::replace_event_wait_handles()</a>: implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#a15da7ad5bcf7147e6308d532f1432352" title="Coincides with sync_io::Native_handle_sender concept counterpart.">Blob_sender::replace_event_wait_handles()</a>: alternatively implemented concept. </dd>
<dd>
<a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html#a349a3fc5bf2b0246f206ea332f8684e0" title="Coincides with sync_io::Native_handle_receiver concept counterpart.">Blob_receiver::replace_event_wait_handles()</a>: alternatively implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00771">771</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00163">replace_event_wait_handles_fwd()</a>.</p>

<p class="reference">Referenced by <a class="el" href="detail_2native__socket__stream__impl_8cpp_source.html#l00033">ipc::transport::Native_socket_stream::Impl::Impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_af5e6e5ccf19782cb698017e9dcf85b34_cgraph.svg" width="695" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_af5e6e5ccf19782cb698017e9dcf85b34_icgraph.svg" width="411" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a7488c933bc6734ff20222aef6f841995" name="a7488c933bc6734ff20222aef6f841995"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7488c933bc6734ff20222aef6f841995">&#9670;&nbsp;</a></span>replace_event_wait_handles_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::replace_event_wait_handles_fwd </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc.html#aa455c7f045059736578ca275fc1a851f">Function</a>&lt; <a class="el" href="classipc_1_1util_1_1sync__io_1_1Asio__waitable__native__handle.html">util::sync_io::Asio_waitable_native_handle</a>()&gt; &amp;&#160;</td>
          <td class="paramname"><em>create_ev_wait_hndl_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34" title="Implements Native_handle_sender and Native_handle_receiver APIs at the same time, per their concept c...">replace_event_wait_handles()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">create_ev_wait_hndl_func</td><td>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34" title="Implements Native_handle_sender and Native_handle_receiver APIs at the same time, per their concept c...">replace_event_wait_handles()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#af5e6e5ccf19782cb698017e9dcf85b34" title="Implements Native_handle_sender and Native_handle_receiver APIs at the same time, per their concept c...">replace_event_wait_handles()</a>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00162">162</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00771">replace_event_wait_handles()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a7488c933bc6734ff20222aef6f841995_cgraph.svg" width="463" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a7488c933bc6734ff20222aef6f841995_icgraph.svg" width="668" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a2e1474a87ee8f5ec18bf6cc8d6cfe7b2" name="a2e1474a87ee8f5ec18bf6cc8d6cfe7b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e1474a87ee8f5ec18bf6cc8d6cfe7b2">&#9670;&nbsp;</a></span>send_blob()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::send_blob </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;&#160;</td>
          <td class="paramname"><em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. Reminder: In rare circumstances, an error emitted here may represent something detected during handling of a <em>preceding</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> call but after it returned. <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated: See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart doc header. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#add3aa0b782c02b3e1222b4ee25598ecc" title="In PEER state: Synchronously, non-blockingly sends one discrete message, reliably and in-order,...">Blob_sender::send_blob()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00118">118</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2e1474a87ee8f5ec18bf6cc8d6cfe7b2_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aabfd97c75d56d3f7a492d95040f4b8ab" name="aabfd97c75d56d3f7a492d95040f4b8ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabfd97c75d56d3f7a492d95040f4b8ab">&#9670;&nbsp;</a></span>send_blob_max_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::sync_io::Native_socket_stream::send_blob_max_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Blob__sender.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order sending ...">transport::Blob_sender</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#a57611f88b625f095d4a6a0f0e5d9e665" title="All notes from sync_io::Native_handle_sender apply.">Blob_sender::send_blob_max_size()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00107">107</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aabfd97c75d56d3f7a492d95040f4b8ab_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a945fb744696feed25067241ce2b6ca4b" name="a945fb744696feed25067241ce2b6ca4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a945fb744696feed25067241ce2b6ca4b">&#9670;&nbsp;</a></span>send_meta_blob_max_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ipc::transport::sync_io::Native_socket_stream::send_meta_blob_max_size </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order sending ...">transport::Native_handle_sender</a> apply.</p>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#afde03d7fb5746e77524229d5881b8d79" title="Same notes as for transport::Native_handle_sender.">Native_handle_sender::send_meta_blob_max_size()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00102">102</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l01021">ipc::transport::sync_io::Native_socket_stream::Impl::send_blob_max_size()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a945fb744696feed25067241ce2b6ca4b_cgraph.svg" width="428" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a945fb744696feed25067241ce2b6ca4b_icgraph.svg" width="406" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a9805f7625a1272af64295555f9a1a61b" name="a9805f7625a1272af64295555f9a1a61b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9805f7625a1272af64295555f9a1a61b">&#9670;&nbsp;</a></span>send_native_handle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::send_native_handle </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8">Native_handle</a>&#160;</td>
          <td class="paramname"><em>hndl_or_null</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1util.html#ae0be7edba7e30ffa3f8b742af621f2ab">util::Blob_const</a> &amp;&#160;</td>
          <td class="paramname"><em>meta_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract. </p>
<p >Reminder: Please peruse "Thread safety" in class doc header.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hndl_or_null</td><td>See above. </td></tr>
    <tr><td class="paramname">meta_blob</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. Reminder: In rare circumstances, an error emitted here may represent something detected during handling of a <em>preceding</em> <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> call but after it returned. <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89" title="Short-hand for flow::Error_code which is very common.">Error_code</a> generated: See <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart doc header. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a0f8f3fb816c09dd9a992a878892bbffb" title="In PEER state: Synchronously, non-blockingly sends one discrete message, reliably/in-order,...">Native_handle_sender::send_native_handle()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00112">112</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l00088">ipc::transport::sync_io::Native_socket_stream::Impl::send_blob()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a9805f7625a1272af64295555f9a1a61b_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a9805f7625a1272af64295555f9a1a61b_icgraph.svg" width="387" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a931e45a395d0bef15084db3b6b1e9754" name="a931e45a395d0bef15084db3b6b1e9754"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a931e45a395d0bef15084db3b6b1e9754">&#9670;&nbsp;</a></span>start_receive_blob_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_receive_blob_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__receiver.html" title="A documentation-only concept: what transport::Blob_receiver is to transport::Native_handle_receiver (...">Blob_receiver</a> API per contract. </p>
<p >In this implementation <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e" title="Implements Native_handle_receiver API per contract.">start_receive_native_handle_ops()</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754" title="Implements Blob_receiver API per contract.">start_receive_blob_ops()</a> are interchangeable: calling either one gets the job done, and calling the other subsequently is harmless but would return <code>false</code> and no-op/log WARNING.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. In addition return <code>false</code>/WARNING/no-op, if <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e" title="Implements Native_handle_receiver API per contract.">start_receive_native_handle_ops()</a> earlier succeeded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd>Native_handle_receiver::start_receive_blob_ops(): implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00815">815</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00188">start_receive_blob_ops_fwd()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a931e45a395d0bef15084db3b6b1e9754_cgraph.svg" width="644" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ae980fbf72c11b6511cd3bec06ffef93b" name="ae980fbf72c11b6511cd3bec06ffef93b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae980fbf72c11b6511cd3bec06ffef93b">&#9670;&nbsp;</a></span>start_receive_blob_ops_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_receive_blob_ops_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754" title="Implements Blob_receiver API per contract.">start_receive_blob_ops()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00188">188</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00815">start_receive_blob_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_ae980fbf72c11b6511cd3bec06ffef93b_cgraph.svg" width="432" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_ae980fbf72c11b6511cd3bec06ffef93b_icgraph.svg" width="402" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ac6d65bc2852ad8800cb57a23311fbe7e" name="ac6d65bc2852ad8800cb57a23311fbe7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6d65bc2852ad8800cb57a23311fbe7e">&#9670;&nbsp;</a></span>start_receive_native_handle_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_receive_native_handle_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_receiver</a> API per contract. </p>
<p >See also <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754" title="Implements Blob_receiver API per contract.">start_receive_blob_ops()</a>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. In addition return <code>false</code>/WARNING/no-op, if <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a931e45a395d0bef15084db3b6b1e9754" title="Implements Blob_receiver API per contract.">start_receive_blob_ops()</a> earlier succeeded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd>Native_handle_receiver::receive_blob_max_size(): implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00807">807</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00183">start_receive_native_handle_ops_fwd()</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__rcv_8cpp_source.html#l00032">ipc::transport::sync_io::Native_socket_stream::Impl::start_receive_blob_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_ac6d65bc2852ad8800cb57a23311fbe7e_cgraph.svg" width="691" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_ac6d65bc2852ad8800cb57a23311fbe7e_icgraph.svg" width="451" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="acd887142b1f85fa6c69ee1d409dd2292" name="acd887142b1f85fa6c69ee1d409dd2292"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd887142b1f85fa6c69ee1d409dd2292">&#9670;&nbsp;</a></span>start_receive_native_handle_ops_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_receive_native_handle_ops_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#ac6d65bc2852ad8800cb57a23311fbe7e" title="Implements Native_handle_receiver API per contract.">start_receive_native_handle_ops()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00183">183</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00807">start_receive_native_handle_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_acd887142b1f85fa6c69ee1d409dd2292_cgraph.svg" width="436" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_acd887142b1f85fa6c69ee1d409dd2292_icgraph.svg" width="682" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a2b1fa31c4d8ac11683472b83efe7956a" name="a2b1fa31c4d8ac11683472b83efe7956a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b1fa31c4d8ac11683472b83efe7956a">&#9670;&nbsp;</a></span>start_send_blob_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_send_blob_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html" title="A documentation-only concept: what transport::Blob_sender is to transport::Native_handle_sender (name...">Blob_sender</a> API per contract. </p>
<p >In this implementation <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093" title="Implements Native_handle_sender API per contract.">start_send_native_handle_ops()</a> and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a" title="Implements Blob_sender API per contract.">start_send_blob_ops()</a> are interchangeable: calling either one gets the job done, and calling the other subsequently is harmless but would return <code>false</code> and no-op/log WARNING.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. In addition return <code>false</code>/WARNING/no-op, if <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093" title="Implements Native_handle_sender API per contract.">start_send_native_handle_ops()</a> earlier succeeded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Blob__sender.html#aa7676391885035faa7195c0840ae2009" title="All notes from sync_io::Native_handle_sender::start_send_native_handle_ops() apply.">Blob_sender::start_send_blob_ops()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00787">787</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00173">start_send_blob_ops_fwd()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2b1fa31c4d8ac11683472b83efe7956a_cgraph.svg" width="632" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a9689164ddc7cdba699f73c6cdde47d9c" name="a9689164ddc7cdba699f73c6cdde47d9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9689164ddc7cdba699f73c6cdde47d9c">&#9670;&nbsp;</a></span>start_send_blob_ops_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_send_blob_ops_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a" title="Implements Blob_sender API per contract.">start_send_blob_ops()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00173">173</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00787">start_send_blob_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a9689164ddc7cdba699f73c6cdde47d9c_cgraph.svg" width="420" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a9689164ddc7cdba699f73c6cdde47d9c_icgraph.svg" width="390" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a2bd0b6a8badd0b770917bb9df9ad6093" name="a2bd0b6a8badd0b770917bb9df9ad6093"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bd0b6a8badd0b770917bb9df9ad6093">&#9670;&nbsp;</a></span>start_send_native_handle_ops()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Event_wait_func_t &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_send_native_handle_ops </td>
          <td>(</td>
          <td class="paramtype">Event_wait_func_t &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html" title="A documentation-only concept defining the behavior of an object that is the sync_io-pattern counterpa...">Native_handle_sender</a> API per contract. </p>
<p >See also <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a" title="Implements Blob_sender API per contract.">start_send_blob_ops()</a>.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Event_wait_func_t</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. In addition return <code>false</code>/WARNING/no-op, if <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2b1fa31c4d8ac11683472b83efe7956a" title="Implements Blob_sender API per contract.">start_send_blob_ops()</a> earlier succeeded.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__sender.html#a8c34b110850c736c45d88689ab06c27c" title="Sets up the sync_io-pattern interaction between *this and the user&#39;s event loop; required before send...">Native_handle_sender::start_send_native_handle_ops()</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00779">779</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00168">start_send_native_handle_ops_fwd()</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l00083">ipc::transport::sync_io::Native_socket_stream::Impl::start_send_blob_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2bd0b6a8badd0b770917bb9df9ad6093_cgraph.svg" width="666" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2bd0b6a8badd0b770917bb9df9ad6093_icgraph.svg" width="426" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="aa4cc1d2afc33e2c713ce585689c8f745" name="aa4cc1d2afc33e2c713ce585689c8f745"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4cc1d2afc33e2c713ce585689c8f745">&#9670;&nbsp;</a></span>start_send_native_handle_ops_fwd()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::start_send_native_handle_ops_fwd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceipc_1_1util_1_1sync__io.html#aa0b9a3cc6bdc7dedbef4f9e06851aa24">util::sync_io::Event_wait_func</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>ev_wait_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Template-free version of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2bd0b6a8badd0b770917bb9df9ad6093" title="Implements Native_handle_sender API per contract.">start_send_native_handle_ops()</a> as required by pImpl idiom. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ev_wait_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00168">168</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00779">start_send_native_handle_ops()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aa4cc1d2afc33e2c713ce585689c8f745_cgraph.svg" width="423" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_aa4cc1d2afc33e2c713ce585689c8f745_icgraph.svg" width="643" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="a2e22d55369f5bd67a4e0d277b73f2823" name="a2e22d55369f5bd67a4e0d277b73f2823"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e22d55369f5bd67a4e0d277b73f2823">&#9670;&nbsp;</a></span>sync_connect()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ipc::transport::sync_io::Native_socket_stream::sync_connect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> &amp;&#160;</td>
          <td class="paramname"><em>absolute_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a24d39cb096987f483f233d9d4ab51ecf" title="Useful for generic programming, the async-I/O-pattern counterpart to *this type.">Async_io_obj</a> counterpart. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">absolute_name</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00083">83</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

<p class="reference">References <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

<p class="reference">Referenced by <a class="el" href="ipc__session_2src_2ipc_2session_2detail_2client__session__impl_8hpp_source.html#l01127">ipc::session::Client_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload, S_SHM_TYPE_OR_NONE, S_GRACEFUL_FINISH_REQUIRED_V &gt;::async_connect()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2e22d55369f5bd67a4e0d277b73f2823_cgraph.svg" width="418" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_a2e22d55369f5bd67a4e0d277b73f2823_icgraph.svg" width="360" height="59"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a78a4f41f5d5b5d71a6092f3ade3252cc" name="a78a4f41f5d5b5d71a6092f3ade3252cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78a4f41f5d5b5d71a6092f3ade3252cc">&#9670;&nbsp;</a></span>operator&lt;&lt; <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream_1_1Impl.html">Impl</a> &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Friend of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2detail_2native__socket__stream__impl_8cpp_source.html#l00519">519</a> of file <a class="el" href="sync__io_2detail_2native__socket__stream__impl_8cpp_source.html">native_socket_stream_impl.cpp</a>.</p>

</div>
</div>
<a id="ac6108711cc8b33c3b7ef0491ba78e2f6" name="ac6108711cc8b33c3b7ef0491ba78e2f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6108711cc8b33c3b7ef0491ba78e2f6">&#9670;&nbsp;</a></span>operator&lt;&lt; <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Friend of <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00155">155</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

</div>
</div>
<a id="ac6108711cc8b33c3b7ef0491ba78e2f6" name="ac6108711cc8b33c3b7ef0491ba78e2f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6108711cc8b33c3b7ef0491ba78e2f6">&#9670;&nbsp;</a></span>operator&lt;&lt;() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">Native_socket_stream</a> &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html" title="Implements both sync_io::Native_handle_sender and sync_io::Native_handle_receiver concepts by using a...">Native_socket_stream</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00155">155</a> of file <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a9db322dea8a43f4ceb04a2085d63afb0" name="a9db322dea8a43f4ceb04a2085d63afb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9db322dea8a43f4ceb04a2085d63afb0">&#9670;&nbsp;</a></span>m_impl</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a34a0e0baa9582cfcdef40f590105927c">Impl_ptr</a> ipc::transport::sync_io::Native_socket_stream::m_impl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The true implementation of this class. </p>
<p >See also our class doc header; and <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8e3703d5c8bac62f828a372691249c85" title="Helper that simply returns m_impl while guaranteeing that m_impl is non-null upon return.">impl()</a> (in particular explaining why this is <code>mutable</code>).</p>
<p >Do not access directly but only via <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a8e3703d5c8bac62f828a372691249c85" title="Helper that simply returns m_impl while guaranteeing that m_impl is non-null upon return.">impl()</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00763">763</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="sync__io_2native__socket__stream_8cpp_source.html#l00041">impl()</a>.</p>

</div>
</div>
<a id="a7034a92ae66759080c035b36ff851e0c" name="a7034a92ae66759080c035b36ff851e0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7034a92ae66759080c035b36ff851e0c">&#9670;&nbsp;</a></span>S_BLOB_UNDERFLOW_ALLOWED</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool ipc::transport::sync_io::Native_socket_stream::S_BLOB_UNDERFLOW_ALLOWED = true</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements concept API; namely it is <code>true</code>. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="section see"><dt>See also</dt><dd>Native_handle_receiver::S_BLOB_UNDERFLOW_ALLOWED: implemented concept. Accordingly also see "Blob underflow semantics" in <a class="el" href="classipc_1_1transport_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order receivin...">transport::Native_handle_receiver</a> doc header. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00179">179</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="native__socket__stream__impl__rcv_8cpp_source.html#l00061">ipc::transport::sync_io::Native_socket_stream::Impl::async_receive_native_handle_impl()</a>.</p>

</div>
</div>
<a id="a00624e2fc3757012d13e3dc0feb26a21" name="a00624e2fc3757012d13e3dc0feb26a21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00624e2fc3757012d13e3dc0feb26a21">&#9670;&nbsp;</a></span>S_MAX_META_BLOB_LENGTH</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const size_t &amp; ipc::transport::sync_io::Native_socket_stream::S_MAX_META_BLOB_LENGTH = Impl::S_MAX_META_BLOB_LENGTH</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The maximum length of a blob that can be sent by this protocol. </p>
<p ><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> shall synchronously emit a particular error, if <code>meta_blob.size()</code> exceeds this. <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a2e1474a87ee8f5ec18bf6cc8d6cfe7b2" title="Implements Blob_sender API per contract.">send_blob()</a> shall do similarly for <code>blob</code> arg. The same is accurate of their async-I/O-pattern <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> counterparts.</p>
<p >Why is it a reference? Answer: To provide for strict pImpl adherence without exploding due to indeterminate order of static initializations across translation units (.cpp files). </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00197">197</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="ipc__session_2src_2ipc_2session_2detail_2client__session__impl_8hpp_source.html#l02052">ipc::session::Client_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload, S_SHM_TYPE_OR_NONE, S_GRACEFUL_FINISH_REQUIRED_V &gt;::mdt_builder()</a>, <a class="el" href="native__socket__stream__impl__rcv_8cpp_source.html#l00797">ipc::transport::sync_io::Native_socket_stream::Impl::receive_meta_blob_max_size()</a>, <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l01016">ipc::transport::sync_io::Native_socket_stream::Impl::send_meta_blob_max_size()</a>, and <a class="el" href="native__socket__stream__impl__snd_8cpp_source.html#l00094">ipc::transport::sync_io::Native_socket_stream::Impl::send_native_handle()</a>.</p>

</div>
</div>
<a id="aab8f0844b61c700b3ab6ab50e3389fff" name="aab8f0844b61c700b3ab6ab50e3389fff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab8f0844b61c700b3ab6ab50e3389fff">&#9670;&nbsp;</a></span>S_META_BLOB_UNDERFLOW_ALLOWED</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool ipc::transport::sync_io::Native_socket_stream::S_META_BLOB_UNDERFLOW_ALLOWED = true</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements concept API; namely it is <code>true</code>. </p>
<p >Notes for <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html" title="Implements both Native_handle_sender and Native_handle_receiver concepts by using a stream-oriented U...">transport::Native_socket_stream</a> apply.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__handle__receiver.html#aeb80b0f432a762a5c78ff19c8e32c0b9" title="Same notes as for transport::Native_handle_receiver.">Native_handle_receiver::S_META_BLOB_UNDERFLOW_ALLOWED</a>: implemented concept. Accordingly also see "Blob underflow semantics" in <a class="el" href="classipc_1_1transport_1_1Native__handle__receiver.html" title="A documentation-only concept defining the behavior of an object capable of reliably/in-order receivin...">transport::Native_handle_receiver</a> doc header. </dd></dl>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00171">171</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<a id="a2d6076a9515718eb9f66c88886e482fa" name="a2d6076a9515718eb9f66c88886e482fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d6076a9515718eb9f66c88886e482fa">&#9670;&nbsp;</a></span>S_RESOURCE_TYPE_ID</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1transport.html#a33de1c256addb3964b839dc2dd407d24">Shared_name</a> ipc::transport::sync_io::Native_socket_stream::S_RESOURCE_TYPE_ID = <a class="el" href="classipc_1_1util_1_1Shared__name.html#a48f20b7b54490aa10dc64081d34c55b2">Shared_name::ct</a>(&quot;lclSock&quot;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Implements concept API. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00163">163</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<a id="af2ebc6eabb5f5b4ed5e0264f0fca3db7" name="af2ebc6eabb5f5b4ed5e0264f0fca3db7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2ebc6eabb5f5b4ed5e0264f0fca3db7">&#9670;&nbsp;</a></span>S_TRANSMIT_NATIVE_HANDLES</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr bool ipc::transport::sync_io::Native_socket_stream::S_TRANSMIT_NATIVE_HANDLES = true</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Useful for generic programming: <code>true</code> to indicate a <code>*this</code> has a <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a9805f7625a1272af64295555f9a1a61b" title="Implements Native_handle_sender API per contract.">send_native_handle()</a> and an <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html#a04effad6ce75fc5c8e6cbee5a26b73e8" title="Implements Native_handle_receiver API per contract.">async_receive_native_handle()</a>. </p>

<p class="definition">Definition at line <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html#l00185">185</a> of file <a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>transport/sync_io/<a class="el" href="sync__io_2native__socket__stream_8hpp_source.html">native_socket_stream.hpp</a></li>
<li>transport/sync_io/<a class="el" href="sync__io_2native__socket__stream_8cpp_source.html">native_socket_stream.cpp</a></li>
<li>transport/<a class="el" href="transport__fwd_8hpp_source.html">transport_fwd.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu May 2 2024 23:56:39 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
